﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace RiadenieProjektov
{
    public partial class frmHlavny : Form
    {
        #region properties
        private int aPozicia;
        public int pozicia
        {
            get { return aPozicia; }
            set { aPozicia = value; }
        }

        private KAkcia aZakazniciAkcia = KAkcia.KonZobrazit;
        public KAkcia zakazniciAkcia
        {
            get { return aZakazniciAkcia; }
            set { aZakazniciAkcia = value; }
        }
        #endregion

        public frmHlavny()
        {
            InitializeComponent();
        }

        public void nastavMenuStrip()
        {
            mnuMan.Visible = false;
            mnuProg.Visible = false;
            mnuTest.Visible = false;
            switch (pozicia)
            {
                case 4: // projektovy manazer
                    mnuMan.Visible = true;
                    lblPrihlaseny.Text = "Ste prihlásený ako projektový manažér.";
                    break;
                case 5: // programator
                    mnuProg.Visible = true;
                    lblPrihlaseny.Text = "Ste prihlásený ako programátor.";
                    break;
                case 6: //tester
                    mnuTest.Visible = true;
                    lblPrihlaseny.Text = "Ste prihlásený ako tester.";
                    break;
                default:
                    Console.WriteLine("Nezname ID pozicie!");
                    break;
            }
        }

        private void odhlasit(object sender, EventArgs e)
        {
            if (MessageBox.Show("Naozaj sa chcete odhlásiť?", "", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
            {
                this.Hide();
            }
        }

        private void frmHlavny_Load(object sender, EventArgs e)
        {
            // TODO: This line of code loads data into the 'dsVsetko.projekty' table. You can move, or remove it, as needed.
            this.projektyTableAdapter.Fill(this.dsVsetko.projekty);
            this.zakazniciTableAdapter.Fill(this.dsVsetko.zakaznici);
            this.vUzivateliaPozicieTableAdapter.Fill(this.dsVsetko.vUzivateliaPozicie);
        }

        private void uzivateliaPridaj(object sender, EventArgs e)
        {
            frmUzivatelia frmUzivatelia = new frmUzivatelia();
            frmUzivatelia.akcia = KAkcia.KonPridat;
            frmUzivatelia.naplnitPolia();
            frmUzivatelia.ShowDialog();
            if (frmUzivatelia.result == KChyba.KonZmenene)
            {
                this.vUzivateliaPozicieTableAdapter.Fill(this.dsVsetko.vUzivateliaPozicie);
            }
        }

        private void uzivateliaUprav(object sender, EventArgs e)
        {
            frmUzivatelia frmUzivatelia = new frmUzivatelia();
            frmUzivatelia.akcia = KAkcia.KonUpravit;
            frmUzivatelia.uzivateliaId = int.Parse(dgvUzivatelia.CurrentRow.Cells[0].Value.ToString());
            frmUzivatelia.naplnitPolia();
            frmUzivatelia.ShowDialog();

            if (frmUzivatelia.result == KChyba.KonZmenene)
            {
                this.vUzivateliaPozicieTableAdapter.Fill(this.dsVsetko.vUzivateliaPozicie);
            }
        }

        private void button1_Click(object sender, EventArgs e)
        {
            frmUzivatelia frmUzivatelia = new frmUzivatelia();
            frmUzivatelia.akcia = KAkcia.KonVymazat;
            frmUzivatelia.uzivateliaId = int.Parse(dgvUzivatelia.CurrentRow.Cells[0].Value.ToString());
            frmUzivatelia.naplnitPolia();
            frmUzivatelia.ShowDialog();

            if (frmUzivatelia.result == KChyba.KonZmenene)
            {
                this.vUzivateliaPozicieTableAdapter.Fill(this.dsVsetko.vUzivateliaPozicie);
            }
        }

        private void label1_Click(object sender, EventArgs e)
        {
        }

        private void tlacidlaPosuvZakaznici(bool viditelne)
        {
            btnZakazniciPrvy.Enabled = viditelne;
            btnZakazniciPredosly.Enabled = viditelne;
            btnZakazniciDalsi.Enabled = viditelne;
            btnZakazniciPosledny.Enabled = viditelne;
        }

        private void editaciaZakaznici(bool povolene)
        {
            txtZakazniciEmail.Enabled = povolene;
            txtZakazniciKontaktnaOsoba.Enabled = povolene;
            txtZakazniciNazov.Enabled = povolene;
            txtZakazniciPoznamka.Enabled = povolene;
            txtZakazniciTelefon.Enabled = povolene;
        }

        private void panelZakaznici(KAkcia akcia)
        {
            zakazniciAkcia = akcia;
            switch (akcia)
            {
                case KAkcia.KonPridat:
                    editaciaZakaznici(true);
                    tlacidlaPosuvZakaznici(false);
                    pnlZakDetail.Show();
                    pnlZakGrid.Hide();
                    DataRow newRow = this.dsVsetko.zakaznici.NewRow();
                    newRow["nazov"] = "";
                    newRow["kontaktnaOsoba"] = "";
                    newRow["email"] = "";
                    newRow["telefon"] = "";
                    newRow["poznamka"] = "";
                    this.dsVsetko.zakaznici.Rows.Add(newRow);
                    zakazniciBindingSource.MoveLast();
                    btnZakazniciZmazAkcia.Enabled = false;
                    btnZakazniciUlozitAkcia.Enabled = true;
                    break;

                case KAkcia.KonUpravit:
                    editaciaZakaznici(true);
                    tlacidlaPosuvZakaznici(true);
                    pnlZakDetail.Show();
                    pnlZakGrid.Hide();
                    btnZakazniciZmazAkcia.Enabled = false;
                    btnZakazniciUlozitAkcia.Enabled = true;
                    break;

                case KAkcia.KonVymazat:
                    editaciaZakaznici(false);
                    tlacidlaPosuvZakaznici(false);
                    pnlZakDetail.Show();
                    pnlZakGrid.Hide();
                    btnZakazniciZmazAkcia.Enabled = true;
                    btnZakazniciUlozitAkcia.Enabled = false;
                    break;

                case KAkcia.KonZobrazit:
                    pnlZakDetail.Hide();
                    pnlZakGrid.Show();
                    break;

                default:
                    break;
            }
        }

        private void zakazniciUlozit(object sender, EventArgs e)
        {
            try
            {
                this.Validate();
                this.zakazniciBindingSource.EndEdit();
                this.tableAdapterManager.UpdateAll(dsVsetko);
                MessageBox.Show("Záznam bol úspešne uložený.", "OK", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            catch (Exception tt)
            {
                Console.WriteLine(tt.Message);
                MessageBox.Show("Chyba, záznam nebol uložený. " + tt.Message, "", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            panelZakaznici(KAkcia.KonZobrazit);
        }

        private void zakazniciPridajChod(object sender, EventArgs e)
        {
            panelZakaznici(KAkcia.KonPridat);
        }

        private void zakazniciUpravChod(object sender, EventArgs e)
        {
            panelZakaznici(KAkcia.KonUpravit);
        }

        private void zakazniciZoznamChod(object sender, EventArgs e)
        {
            panelZakaznici(KAkcia.KonZobrazit);
        }

        private void zakazniciPrvy(object sender, EventArgs e)
        {
            zakazniciBindingSource.MoveFirst();
        }

        private void zakazniciPredosly(object sender, EventArgs e)
        {
            zakazniciBindingSource.MovePrevious();
        }

        private void zakazniciDalsi(object sender, EventArgs e)
        {
            zakazniciBindingSource.MoveNext();
        }

        private void zakazniciPosledny(object sender, EventArgs e)
        {
            zakazniciBindingSource.MoveLast();
        }

        private void zakazniciZmazat(object sender, EventArgs e)
        {
            try
            {
                zakazniciBindingSource.RemoveCurrent();
                this.tableAdapterManager.UpdateAll(dsVsetko);
                MessageBox.Show("Záznam bol úspešne zmazaný.", "", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            catch (Exception ex)
            {
                MessageBox.Show("Chyba, záznam nebol zmazaný. " + ex.Message, "", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            panelZakaznici(KAkcia.KonZobrazit);
        }

        private void zakazniciZmazChod(object sender, EventArgs e)
        {
            panelZakaznici(KAkcia.KonVymazat);
        }
    }
}